/* { dg-do compile { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
// { dg-require-effective-target c++11 }
// { dg-require-effective-target fpic }
/* { dg-options "-O2 -fno-omit-frame-pointer -fPIC" } */

typedef int int32;
typedef long long int64;
typedef unsigned int uint32;
typedef unsigned long long uint64;
namespace std {
  typedef __SIZE_TYPE__ size_t;
  template<class _CharT>
  struct char_traits;
  template<typename _Tp>
  inline _Tp* __addressof(_Tp& __r) noexcept {
    return reinterpret_cast<_Tp*> (&const_cast<char&>(reinterpret_cast<const volatile char&>(__r)));
  }
  template<typename _Tp>
  struct remove_reference {
    typedef _Tp type;
  };
  template<typename _Tp>
  constexpr _Tp&& forward(typename std::remove_reference<_Tp>::type& __t) noexcept {
    return static_cast<_Tp&&>(__t);
  }
}
typedef __SIZE_TYPE__ size_t;
extern "C++" {
  inline void* operator new(std::size_t, void* __p) noexcept {
    return __p;
  }
}
namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
  template<typename _Tp>
    class new_allocator {
  public:
    typedef size_t size_type;
    typedef _Tp* pointer;
  };
}
namespace std {
  template<typename _Tp>
  using __allocator_base = __gnu_cxx::new_allocator<_Tp>;
  template<typename _Tp>
  class allocator
    : public __allocator_base<_Tp> {
  public:
    typedef size_t size_type;
    template<typename _Tp1>
    struct rebind {
      typedef allocator<_Tp1> other;
    };
  };
}
namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
  template<typename _CharT, typename _Traits, typename _Alloc>
    class __sso_string_base;
  template<typename _CharT, typename _Traits = std::char_traits<_CharT>, typename _Alloc = std::allocator<_CharT>, template <typename, typename, typename> class _Base = __sso_string_base>
    class __versa_string;
  template<typename _CharT, typename _Traits, typename _Alloc>
    struct __vstring_utility {
    typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type;
    template<typename _Alloc1>
    struct _Alloc_hider
      : public _Alloc1 {
      _Alloc_hider(const _Alloc1& __a, _CharT* __ptr)
  : _Alloc1(__a), _M_p(__ptr) {
      }
      _CharT* _M_p;
    };
  };
  template<typename _CharT, typename _Traits, typename _Alloc>
    class __sso_string_base
      : protected __vstring_utility<_CharT, _Traits, _Alloc> {
    typedef __vstring_utility<_CharT, _Traits, _Alloc> _Util_Base;
    typedef typename _Util_Base::_CharT_alloc_type _CharT_alloc_type;
    typedef typename _CharT_alloc_type::size_type size_type;
  private:
    typename _Util_Base::template _Alloc_hider<_CharT_alloc_type>
    _M_dataplus;
    size_type _M_string_length;
    enum {
      _S_local_capacity = 15 };
    union {
      _CharT _M_local_data[_S_local_capacity + 1];
    };
    template<typename _InIterator>
    void _M_construct(_InIterator __beg, _InIterator __end);
  public:
    size_type _M_max_size() const;
    _CharT* _M_data() const {
      return _M_dataplus._M_p;
    }
    size_type _M_length() const {
      return _M_string_length;
    }
    __sso_string_base(const __sso_string_base& __rcs);
    const _CharT_alloc_type& _M_get_allocator() const {
      static _CharT_alloc_type c;
      return c;
    }
  };
  template<typename _CharT, typename _Traits, typename _Alloc>
    __sso_string_base<_CharT, _Traits, _Alloc>:: __sso_string_base(const __sso_string_base& __rcs)
    : _M_dataplus(__rcs._M_get_allocator(), _M_local_data) {
    _M_construct(__rcs._M_data(), __rcs._M_data() + __rcs._M_length());
  }
  template<typename _CharT, typename _Traits, typename _Alloc, template <typename, typename, typename> class _Base>
    class __versa_string
      : private _Base<_CharT, _Traits, _Alloc> {
  };
}
template<typename _CharT, typename _Traits = std::char_traits<_CharT>, typename _Alloc = std::allocator<_CharT> >
class basic_string
  : public __gnu_cxx::__versa_string<_CharT, _Traits, _Alloc> {
};
typedef basic_string<char> string;
namespace std __attribute__ ((__visibility__ ("default"))) {
  template<typename _Alloc, typename _Tp>
    class __alloctr_rebind_helper {
  public:
    static const bool __value = true;
  };
  template<typename _Alloc, typename _Tp, bool = __alloctr_rebind_helper<_Alloc, _Tp>::__value>
    struct __alloctr_rebind;
  template<typename _Alloc, typename _Tp> struct __alloctr_rebind<_Alloc, _Tp, true>
  {
    typedef typename _Alloc::template rebind<_Tp>::other __type;
  };
  template<typename _Alloc>
    struct allocator_traits {
  private:
    template<typename _Tp>
    static typename _Tp::pointer _S_pointer_helper(_Tp*);
    typedef decltype(_S_pointer_helper((_Alloc*)0)) __pointer;
  public:
    typedef __pointer pointer;
    template<typename _Tp>
    using rebind_alloc = typename __alloctr_rebind<_Alloc, _Tp>::__type;
  };
}
namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
  template<typename _Alloc> struct __alloc_traits
    : std::allocator_traits<_Alloc>
  {
    typedef std::allocator_traits<_Alloc> _Base_type;
    template<typename _Tp>
    struct rebind {
      typedef typename _Base_type::template rebind_alloc<_Tp>
      other;
    };
  };
}
namespace std __attribute__ ((__visibility__ ("default"))) {
  template<typename _T1, typename... _Args>
    inline void _Construct(_T1* __p, _Args&&... __args) {
    ::new(static_cast<void*>(__p)) _T1(std::forward<_Args>(__args)...);
  }
  template<typename _Tp, typename _Alloc>
    struct _Vector_base {
    typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template rebind<_Tp>::other _Tp_alloc_type;
    typedef typename __gnu_cxx::__alloc_traits<_Tp_alloc_type>::pointer pointer;
    struct _Vector_impl
      : public _Tp_alloc_type {
      pointer _M_start;
      pointer _M_finish;
    };
  public:
    _Vector_impl _M_impl;
  };
  template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
    class vector
      : protected _Vector_base<_Tp, _Alloc> {
    typedef _Vector_base<_Tp, _Alloc> _Base;
  public:
    typedef _Tp value_type;
    typedef typename _Base::pointer pointer;
    typedef size_t size_type;
    size_type size() const;
    void push_back(const value_type& __x) {
      _M_emplace_back_aux(__x);
    }
    template<typename... _Args>
    void _M_emplace_back_aux(_Args&&... __args);
    size_type _M_check_len();
  };
  template<typename _Tp, typename _Alloc> template<typename... _Args>
    void vector<_Tp, _Alloc>:: _M_emplace_back_aux(_Args&&... __args) {
    const size_type __len = _M_check_len();
    pointer __new_start(static_cast<pointer>(::operator new(__len * sizeof(_Tp))));
    pointer __new_temp(__new_start + size());
    ::new((void *)__new_temp) _Tp(std::forward<_Args>(__args)...);
    pointer __cur = __new_start;
    pointer __first = this->_M_impl._M_start;
    pointer __last = this->_M_impl._M_finish;
    for (;
	 __first != __last;
	 ++__first, ++__cur) std::_Construct(std::__addressof(*__cur), *__first);
  }
}
using std::vector;
class DL {
public:
  struct ChunkId {
    int64 disk_id;
    uint64 handle;
    uint64 version;
    string capability;
    ChunkId();
  };
  struct ChunkInfo {
    ChunkId id;
    uint64 mtime;
    uint32 length;
    int32 space_used;
  };
};
class FDB {
  void CollectChunk(const DL::ChunkInfo& chunk, const int& location);
private:
  struct ChunkData {
    int location;
    DL::ChunkInfo chunk_info;
  };
  vector<ChunkData> chunk_data_;
};
void FDB::CollectChunk(const DL::ChunkInfo& chunk, const int& location) {
  ChunkData chunk_data;
  chunk_data_.push_back( chunk_data);
}
